/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sunspotworld;

import com.sun.spot.io.j2me.radiogram.Radiogram;
import com.sun.spot.io.j2me.radiogram.RadiogramConnection;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.microedition.io.Connector;
import javax.microedition.io.Datagram;
import javax.swing.JOptionPane;

/**
 *
 * @author Salaver
 */
public class Cosecha {
    
    private int id = 0;
    private String nombre;
    private String cantidad;
    public Lechuga lechuga = new Lechuga();
    public Etapa etapa = new Etapa();
    public Mezcla mezcla;
    public Semillero semillero;
    ConexionBD con = new ConexionBD();
    
    
    

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the cantidad
     */
    public String getCantidad() {
        return cantidad;
    }

    /**
     * @param cantidad the cantidad to set
     */
    public void setCantidad(String cantidad) {
        this.cantidad = cantidad;
    }
    
    public void cargarCosecha(){
        try {
            if (HidroponiaHost.estado == 0){
            con.conectar();
            String query1 = "SELECT c.id, c.nombre, c.cantidad, l.id, l.tipo, e.id, e.nombre, e.duracion, e.ciclo, e.fase, ec.fecha_inicio\n" +
                            "FROM cosecha c, lechuga l, etapa e, etapa_cosecha ec\n" +
                            "WHERE l.id = c.lechuga_id\n" +
                            "AND c.id = ec.cosecha_id\n" +
                            "AND ec.etapa_id = e.id\n" +
                            "AND ec.fecha_fin IS NULL \n" +
                            "AND c.id = (SELECT MAX(id) FROM cosecha)\n" +
                            "GROUP BY c.id, c.nombre, c.cantidad, l.id, l.tipo, e.id, e.nombre, e.duracion, e.ciclo, e.fase, ec.fecha_inicio";
            Date now = new Date();
            System.out.println("Buscando si existen cosechas");
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
            //System.out.println("Hoy es " + sdf.format(now.getTime()));
            ResultSet rs1 = con.consultar(query1);
            rs1.next();
            if (rs1.getString(2) != null){
                
                Calendar cambio = Calendar.getInstance();
                cambio.setTime(sdf.parse(rs1.getString(11)));
                cambio.add(Calendar.DATE, rs1.getInt(10)); 
                Calendar ahora = Calendar.getInstance();
                ahora.setTime(now);
                System.out.println("cambio de pase "+sdf.format(cambio.getTime()));
                System.out.println("mayor que ahora "+sdf.format(now.getTime()));
                if (cambio.compareTo(ahora) > 0 ){
                if (rs1.getInt(6) == 1){
                    System.out.println("Encontre cosecha semillero");
                    String query2 = "SELECT s.id, s.cantidad, MAX(sr.hora_inicio), MAX(sr.hora_fin) FROM semillero s, semillero_riego sr WHERE sr.semillero_id = s.id AND s.cosecha_id ="+rs1.getInt(1);
                    ResultSet rs2 = con.consultar(query2);
                    rs2.next();
                    System.out.println("RS2 "+rs2.getString(3));
                    HidroponiaHost.cosecha.semillero = new Semillero();
                    if (rs2.getString(4) != null){
                        System.out.println("se encontro cosecha semillero con riegos");
                        Date hora_fin = sdf.parse(rs2.getString(3));
                        System.out.println("time "+(sdf.format(hora_fin.getTime()+(HidroponiaHost.minuto*rs1.getInt(9)))));
                       // if ((sdf.parse(rs1.getString(11)).getTime()+(HidroponiaHost.dia*rs1.getInt(10))) > now.getTime()){
                            if ((hora_fin.getTime()+(HidroponiaHost.minuto*rs1.getInt(9))) > now.getTime()){
                                // continuar cosecha
                                JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                                "Cosecha cargada exitosamente. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                                System.out.println("cargando cosecha no vencida");
                                HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                                HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                                HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                                HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                                HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                                HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                                HidroponiaHost.cosecha.setId(rs1.getInt(1));
                                HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                                HidroponiaHost.cosecha.lechuga.setId(1);
                                HidroponiaHost.cosecha.lechuga.setTipo("americano");
                                HidroponiaHost.cosecha.semillero.setId(rs2.getInt(1));
                                HidroponiaHost.cosecha.semillero.setCantidad(null);
                                HidroponiaHost.hiloC.start();
                            } else {
                                //vencida crear nueva o continuar
                                Object[] options = {"Si, continuar",
                                "No, crear nueva"};
                                int n = JOptionPane.showOptionDialog(HidroponiaHost.bienvenido,
                                "La ultima cosecha tiene los riegos desactualizados! \nDesea continuar con la cosecha o desea iniciar una nueva?",
                                "Aviso",
                                JOptionPane.YES_NO_OPTION,
                                JOptionPane.QUESTION_MESSAGE,
                                null,     //do not use a custom Icon
                                options,  //the titles of buttons
                                options[0]); //default button title
                                if (n == 0){
                                    //continuar vencida
                                    System.out.println("continuando semillero vencido");
                                    HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                                    HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                                    HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                                    HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                                    HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                                    HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                                    HidroponiaHost.cosecha.setId(rs1.getInt(1));
                                    HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                                    HidroponiaHost.cosecha.lechuga.setId(1);
                                    HidroponiaHost.cosecha.lechuga.setTipo("americano");
                                    HidroponiaHost.cosecha.semillero.setId(rs2.getInt(1));
                                    HidroponiaHost.cosecha.semillero.setCantidad(null);
                                    //HidroponiaHost.cosecha.semillero.regar();
                                    HidroponiaHost.hiloC.estado=1;
                                    HidroponiaHost.hiloC.start();
                                } else{
                                    //vencida y nueva
                                    CosechaDialog cosechad = new CosechaDialog(null);
                                    cosechad.setVisible(true);
                                    JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                                    "No hay ninguna cosecha pendiente, creando nueva cosecha. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                                    //HidroponiaHost.cosecha.semillero.regar();
                                    HidroponiaHost.hiloC.start();
                                }
                            }
                        //aki
                    } else {
                        // regar primera vez semillero
                        System.out.println("se encontro cosecha sin riegos");
                        String query3 = "SELECT id, cantidad FROM semillero WHERE cosecha_id="+rs1.getInt(1);
                        ResultSet rs3 = con.consultar(query3);
                        rs3.next();
                        HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                        HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                        HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                        HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                        HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                        HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                        HidroponiaHost.cosecha.setId(rs1.getInt(1));
                        HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                        HidroponiaHost.cosecha.lechuga.setId(1);
                        HidroponiaHost.cosecha.lechuga.setTipo("americano");
                        HidroponiaHost.cosecha.semillero.setId(rs3.getInt(1));
                        HidroponiaHost.cosecha.semillero.setCantidad(null);
                        JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                        "Cosecha cargada para primer riego de semillero. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                        HidroponiaHost.hiloC.start();
                        //HidroponiaHost.cosecha.semillero.regar();
                    }
                } else if (rs1.getInt(6) > 1) {
                    System.out.println("se encontro cosecha NFT");
                    String query3 = "SELECT m.id, MAX(mr.hora_inicio), MAX(mr.hora_fin) FROM mezcla m, mezcla_riego mr WHERE mr.mezcla_id = m.id AND m.cosecha_id ="+rs1.getInt(1);
                    ResultSet rs3 = con.consultar(query3);
                    rs3.next();
                    HidroponiaHost.cosecha.mezcla = new Mezcla();
                    if (rs3.getString(3) != null){
                        Date hora_fin = sdf.parse(rs3.getString(2));
                        System.out.println(sdf.format(hora_fin.getTime()+(HidroponiaHost.minuto*rs1.getInt(9))));
                        System.out.println(sdf.format(now.getTime()));
                        
                            if ((hora_fin.getTime()+(HidroponiaHost.minuto*rs1.getInt(9))) > now.getTime()){
                                // continuar cosecha
                                JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                                "Cosecha cargada exitosamente. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                                System.out.println("cargando cosecha no vencida");
                                HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                                HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                                HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                                HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                                HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                                HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                                HidroponiaHost.cosecha.setId(rs1.getInt(1));
                                HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                                HidroponiaHost.cosecha.lechuga.setId(1);
                                HidroponiaHost.cosecha.lechuga.setTipo("americano");
                                HidroponiaHost.cosecha.mezcla.setId(rs3.getInt(1));
                                HidroponiaHost.cosecha.mezcla.cargarNutrientes();
                                HidroponiaHost.cosecha.mezcla.cargarRangos();
                                HidroponiaHost.hiloC.start();
                                HidroponiaHost.hiloS.start();
                                HidroponiaHost.hiloE.start();
                            } else {
                                //vencida crear nueva o continuar
                                Object[] options = {"Si, continuar",
                                "No, crear nueva"};
                                int n = JOptionPane.showOptionDialog(HidroponiaHost.bienvenido,
                                "La ultima cosecha tiene los riegos desactualizados! \nDesea continuar con la cosecha o desea iniciar una nueva?",
                                "Aviso",
                                JOptionPane.YES_NO_OPTION,
                                JOptionPane.QUESTION_MESSAGE,
                                null,     //do not use a custom Icon
                                options,  //the titles of buttons
                                options[0]); //default button title
                                if (n == 0){
                                    //continuar vencida
                                    System.out.println("continuando NFT vencido");
                                    HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                                    HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                                    HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                                    HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                                    HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                                    HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                                    HidroponiaHost.cosecha.setId(rs1.getInt(1));
                                    HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                                    HidroponiaHost.cosecha.lechuga.setId(1);
                                    HidroponiaHost.cosecha.lechuga.setTipo("americano");
                                    HidroponiaHost.cosecha.mezcla.setId(rs3.getInt(1));
                                    //HidroponiaHost.cosecha.mezcla.regar();
                                    HidroponiaHost.cosecha.mezcla.cargarNutrientes();
                                    HidroponiaHost.cosecha.mezcla.cargarRangos();
                                    HidroponiaHost.hiloC.estado=1;
                                    HidroponiaHost.hiloC.start();
                                    HidroponiaHost.hiloS.start();
                                    HidroponiaHost.hiloE.start();
                                } else{
                                    CosechaDialog cosechad = new CosechaDialog(null);
                                    cosechad.setVisible(true);
                                    JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                                    "No hay ninguna cosecha pendiente, creando nueva cosecha. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                                    //HidroponiaHost.cosecha.semillero.regar();
                                    HidroponiaHost.hiloC.start();
                                }
                            }
                        } else {
                            /*JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                            "Cosecha vencida, se creara una nueva \n*Presione OK cuando este listo");
                            CosechaDialog cosechad = new CosechaDialog(null);
                            cosechad.setVisible(true);
                            JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                            "Creando nueva cosecha. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                            //HidroponiaHost.cosecha.semillero.regar();
                            HidroponiaHost.hiloC.start();*/
                            String query4 = "SELECT id FROM mezcla WHERE cosecha_id="+rs1.getInt(1);
                            ResultSet rs4 = con.consultar(query4);
                            rs4.next();
                            HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                            HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                            HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                            HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                            HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                            HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                            HidroponiaHost.cosecha.setId(rs1.getInt(1));
                            HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                            HidroponiaHost.cosecha.lechuga.setId(1);
                            HidroponiaHost.cosecha.lechuga.setTipo("americano");
                            HidroponiaHost.cosecha.mezcla.setId(rs4.getInt(1));
                            JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                            "Cosecha cargada para primer riego de NFT. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                            System.out.println("regando por pimera vez cosecha ");
                            HidroponiaHost.cosecha.mezcla.cargarNutrientes();
                            HidroponiaHost.cosecha.mezcla.cargarRangos();
                            HidroponiaHost.hiloC.start();
                            HidroponiaHost.hiloS.start();
                            HidroponiaHost.hiloE.start();
                        }
                        //aki
                    } else {
                        // regar primera vez mezcla
                        /*String query4 = "SELECT id FROM mezcla WHERE cosecha_id="+rs1.getInt(1);
                        ResultSet rs4 = con.consultar(query4);
                        rs4.next();
                        HidroponiaHost.cosecha.etapa.setId(rs1.getInt(6));
                        HidroponiaHost.cosecha.etapa.setNombre(rs1.getString(7));
                        HidroponiaHost.cosecha.etapa.setDuracion(rs1.getInt(8));
                        HidroponiaHost.cosecha.etapa.setCiclo(rs1.getInt(9));
                        HidroponiaHost.cosecha.etapa.setFase(rs1.getInt(10));
                        HidroponiaHost.cosecha.setCantidad(rs1.getString(3));
                        HidroponiaHost.cosecha.setId(rs1.getInt(1));
                        HidroponiaHost.cosecha.setNombre(rs1.getString(2));
                        HidroponiaHost.cosecha.lechuga.setId(1);
                        HidroponiaHost.cosecha.lechuga.setTipo("americano");
                        HidroponiaHost.cosecha.mezcla.setId(rs4.getInt(1));
                        JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                        "Cosecha cargada para primer riego de NFT. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                        System.out.println("regando por pimera vez cosecha ");
                        HidroponiaHost.cosecha.mezcla.cargarNutrientes();
                        HidroponiaHost.cosecha.mezcla.cargarRangos();
                        HidroponiaHost.hiloC.start();
                        HidroponiaHost.hiloS.start();
                        HidroponiaHost.hiloE.start();*/
                    }
                } else { 
                            JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                            "Cosecha vencida, se creara una nueva \n*Presione OK cuando este listo");
                            CosechaDialog cosechad = new CosechaDialog(null);
                            cosechad.setVisible(true);
                            JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                            "Creando nueva cosecha. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                            //HidroponiaHost.cosecha.semillero.regar();
                            HidroponiaHost.hiloC.start();
                }
                
            } else {
                CosechaDialog cosechad = new CosechaDialog(null);
                cosechad.setVisible(true);
                //default title and icon
                JOptionPane.showMessageDialog(HidroponiaHost.bienvenido,
                "No hay ninguna cosecha pendiente, creando nueva cosecha. \n*Recuerde preparar las componentes del sistema \n*Presione OK cuando este listo");
                //HidroponiaHost.cosecha.semillero.regar();
                HidroponiaHost.hiloC.start();
            }
            con.desconectar();
            HidroponiaHost.estado = 1;
            HidroponiaHost.bienvenido.jTextArea2.setText("Cosecha: "+HidroponiaHost.cosecha.getNombre()+"\nCantida de Lechugas: "+HidroponiaHost.cosecha.getCantidad()+"\nEtapa actual: "+HidroponiaHost.cosecha.etapa.getNombre());
            }
            } catch (SQLException ex) {
            Logger.getLogger(Cosecha.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ParseException ex) {
            Logger.getLogger(Cosecha.class.getName()).log(Level.SEVERE, null, ex);
        }    
    }    
    
}
